package com.lanan.springboot.service;

import com.lanan.springboot.model.User;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * @desc IUserService
 * @author lanan
 * @date 2022-04-09 21:49:50
 **/
public interface IUserService {
    /**
     * @desc 据用户名查询用户，用于获取用户的信息比对密码
     **/
    User selectByUsername(String username);

    User addUser(String username, String password, String avatar, String email, String bio, String website,
                 boolean needActiveEmail);

    /**
     * @desc 通过手机号登录/注册创建用户
     **/
    User addUserWithMobile(String mobile);

    /**
     * @desc 根据用户token查询用户
     **/
    User selectByToken(String token);

    /**
     * @desc 根据用户mobile查询用户
     **/
    User selectByMobile(String mobile);

    /**
     * @desc 根据用户email查询用户
     **/
    User selectByEmail(String email);

    /**
     * @desc 根据用户email修改用户信息
     **/
    Integer updateUserPwdByEmail(String email, String pwd);

    User selectById(Integer id);

    /**
     * @desc 查询用户积分榜
     **/
    List<User> selectTop(Integer limit);

    /**
     * @desc 更新用户信息
     **/
    void update(User user);

    IPage<User> selectAll(Integer pageNo, String username);

    User selectByIdNoCatch(Integer id);

    /**
     * @desc 查询今天新增的话题数
     **/
    int countToday();

    /**
     * @desc 删除用户
     **/
    void deleteUser(Integer id);

    /**
     * @desc 删除redis缓存
     **/
    void delRedisUser(User user);
}
